package com.hengpeng.itfinoss.service.article;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.common.persist.query.model.Order.OrderType;
import com.hengpeng.itfinbase.persist.ArticleGroup;
import com.hengpeng.itfinbase.persist.ArticleGroupEx;

/**
 * <pre>
 *  文章分组接口
 * </pre>
 * @author pengfangliang
 * @version 1.0, 2012-8-7
 */

public interface ArticleGroupSerivce
{
	/**
	 * <pre>
	 * 新增分组类别
	 * </pre>
	 * @param articleCategory
	 * @return
	 */
	public ServiceResult<ArticleGroup> save(ArticleGroup articleGroup);

	/**
	 * <pre>
	 *  修改分组类别 
	 * </pre>
	 * @param articleCategory
	 * @return
	 */
	public ServiceResult<ArticleGroup> update(ArticleGroup articleGroup);

	/**
	 * <pre>
	 * 获取新闻分组 
	 * </pre>
	 * @param id 新闻分组流水号
	 * @return
	 */
	public ServiceResult<ArticleGroup> get(Long id);

	/**
	 * <pre>
	 * 查询所有的新闻分组
	 * </pre>
	 * @return
	 */
	public ServiceResult<List<ArticleGroup>> findAll();

	/**
	 * <pre>
	 *  批量删除新闻分组
	 * </pre>
	 * @param ids 新闻分组流水号集合
	 * @return
	 */
	public ServiceResult<ArticleGroup> delete(Set<Object> ids);

	/**
	 * <pre>
	 *  分页查询新闻分组
	 * </pre>
	 * @param name 新闻分组名称
	 * @param remark 描述
	 * @param pageIndex 当前页号
	 * @param pageSize 每页显示新闻类别数
	 * @param sortMap 排序集合
	 * @return
	 */
	public ServiceResult<List<ArticleGroup>> findArticleGroupPage(String name, String remark, Integer pageIndex,
			Integer pageSize, LinkedHashMap<String, OrderType> sortMap);

	public ServiceResult<Long> findArticleGroupCount(String name);

	/**
	 * <pre>
	 *   查询新闻组关联记录数
	 * </pre>
	 * @param groupIds
	 * @param articleIds
	 * @return
	 */
	public Long countArticleGroupEx(Long[] groupIds, Long[] articleIds);

	public List<ArticleGroupEx> findArticleGroupEx(Long[] groupIds, Long[] articleIds);

}
